//  修改密码 / 重置密码 接口

const db = require('../db')

// 引入 bcryptjs进行密码加密
const bcrypt = require('bcryptjs')

// 验证验证码是否写对
exports.post = (req, res) => {
  // console.log(req.body)
  const { email, password, code } = req.body

  const selEmailSql = 'select * from users where email=?'
  db.query(selEmailSql, email, (err, results) => {
    if (err) return console.log(err, 'selEmailSql语句执行失败')
    if (results.length < 1) {
      res.send({
        status: 402,
        mes: '该邮箱未注册,无法更新密码'
      })
    } else {
      // 查询 数据库 该用户 是否 有密码  => (有密码,就是已注册 => 可以更新密码)
      const selPwdSql = 'select password from users where email=?'
      db.query(selPwdSql, email, (err, results) => {
        if (err) return console.log('selPwdSql语句执行失败')
        if (results[0].password === null) {
          res.send({
            status: 402,
            mes: '该邮箱未注册,无法更新密码'
          })
        } else {
          // 数据库里面有该用户 => (用户点了发送验证码) => 后续 => 校验 验证码
          const checkcodeSql = 'select code from users where email=?'
          db.query(checkcodeSql, email, (err, results) => {
            if (err) {
              console.log(err, 'checkcodeSql语句执行失败')
            }
            if (results[0].code === null) {
              res.send({
                status: 401,
                mes: '验证码错误！'
              })
            } else {
              // 验证 邮件验证码 是否正确
              const compareResult = bcrypt.compareSync(code, results[0].code)
              // console.log('-------', results[0].code)
              // console.log(code)
              // console.log(compareResult)
              if (err) return console.log(err)
              // 验证码错误
              if (compareResult === false) {
                res.send({
                  status: 401,
                  mes: '验证码错误！'
                })
              } else {
                // 验证码正确 =>  将用户密码添加/更新到数据库
                const updatePWdSql = `update users set password='${password}' where email='${email}'`
                db.query(updatePWdSql, function (err, results) {
                  // console.log(results)
                  // 执行sql语句失败
                  if (err) {
                    return console.log(err, '更新用户密码sql语句失败')
                  } else if (results.affectedRows !== 1) {
                    // sql语句执行成功，但影响行不为1
                    res.send({
                      status: 402,
                      message: '更新用户密码失败，请稍后再试'
                    })
                  } else {
                    // sql语句执行成功, 用户密码加入数据库
                    res.send({
                      status: 201,
                      message: '更新用户密码成功!'
                    })
                    // 注册成功
                    // 若验证码正确之后，需要将数据库中的验证码清除
                    const clearcodedSql = 'update users set code=null where email=?'
                    db.query(clearcodedSql, email, (err, results) => {
                      // console.log(results)
                      if (err) {
                        // return res.send(err)
                        console.log(err, '清除验证码sql语句失败')
                      } else if (results.affectedRows !== 1) {
                        return console.log('验证码清除失败')
                      }
                    })
                  }
                })
              }
            }
          })
        }
      })
    }
  })
}

//       const compareResult = bcrypt.compareSync(code, results[0].code)
//       console.log('-------', results[0].code)
//       console.log(code)
//       console.log(compareResult)
//       if (err) return console.log(err)
//       if (compareResult === false) {
//         res.send({
//           status: 401,
//           mes: '验证码错误！'
//         })
//       } else {
//         // 若验证码正确之后，需要判断 邮箱是否被占用(判断邮箱是否有密码/没有密码就是没有注册成功)
//         // 根据 邮箱 查询 密码
//         // const slePwdSql = `select password from users where email='${email}'`
//         // db.query(slePwdSql, (err, results) => {
//         //   if (err) return console.log(err, 'selPwdSql语句执行失败')
//         //   console.log(results.length)
//         //   console.log(results[0].password)
//         //   if (results[0].password === null) {
//         //     console.log('该邮箱没有被注册(该邮箱没有密码)')
//             // 将用户密码添加/更新到数据库
//             const addUserSql = `update users set password='${password}' where email='${email}'`
//             db.query(addUserSql, function (err, results) {
//               console.log(results)
//               // 执行sql语句失败
//               // if (err) return res.send(err.message)
//               if (err) {
//                 return console.log(err)
//               } else if (results.affectedRows !== 1) {
//                 // sql语句执行成功，但影响行不为1
//                 res.send({
//                   status: 402,
//                   message: '更新用户密码失败，请稍后再试'
//                 })
//               } else {
//                 // sql语句执行成功, 用户密码加入数据库
//                 res.send({
//                   status: 201,
//                   message: '更新用户密码成功!'
//                 })
//                 // 注册成功
//                 // 若验证码正确之后，需要将数据库中的验证码清除
//                 const clearcodedSql = 'update users set code=null where email=?'
//                 db.query(clearcodedSql, email, (err, results) => {
//                   console.log(results)
//                   if (err) {
//                     // return res.send(err)
//                     console.log(err)
//                   } else if (results.affectedRows !== 1) {
//                     // return res.send({ status: 401, mes: '验证码清除失败！' })
//                     return console.log('验证码清除失败')
//                   }
//                 })
//               }
//             })

//             // 该邮箱没有注册(该邮箱没有密码)  =>  数据库 删除 该账号
//             // const delEmailSql = `delete from users where email='${email}'`
//             // db.query(delEmailSql, (err, results) => {
//             //   console.log(results)
//             //   if (err) {
//             //     console.log(err, 'delEmailSql语句执行失败')
//             //   } else if (results.affectedRows !== 1) {
//             //     console.log('delEmailSql删除失败')
//             //   } else {
//             //     console.log('delEmailSql删除成功!!!')
//             //   }
//             // })

//             // 该邮箱有注册了(该邮箱有密码)  =>  数据库 更新 该账号密码
//             // 判断该邮箱有密码后,也需要将 验证码 清除
//             const clearcodedSql = 'update users set code=null where email=?'
//             db.query(clearcodedSql, email, (err, results) => {
//               console.log(results)
//               if (err) {
//                 // return res.send(err)
//                 console.log(err)
//               } else if (results.affectedRows !== 1) {
//                 // return res.send({ status: 401, mes: '验证码清除失败！' })
//                 return console.log('验证码清除失败')
//               }
//             })

//         })
//         // // 将用户密码添加/更新到数据库
//         // const addUserSql = `update users set password='${password}' where email='${email}'`
//         // db.query(addUserSql, function (err, results) {
//         //   console.log(results)
//         //   // 执行sql语句失败
//         //   // if (err) return res.send(err.message)
//         //   if (err) {
//         //     return console.log(err)
//         //   } else if (results.affectedRows !== 1) {
//         //     // sql语句执行成功，但影响行不为1
//         //     res.send({
//         //       status: 402,
//         //       message: '注册用户失败，请稍后再试'
//         //     })
//         //   } else {
//         //     // sql语句执行成功, 用户密码加入数据库
//         //     res.send({
//         //       status: 201,
//         //       message: '注册用户成功!'
//         //     })
//         //     // 注册成功
//         //     // 若验证码正确之后，需要将数据库中的验证码清除
//         //     const clearcodedSql = 'update users set code=null where email=?'
//         //     db.query(clearcodedSql, email, (err, results) => {
//         //       console.log(results)
//         //       if (err) {
//         //         // return res.send(err)
//         //         console.log(err)
//         //       } else if (results.affectedRows !== 1) {
//         //         // return res.send({ status: 401, mes: '验证码清除失败！' })
//         //         return console.log('验证码清除失败')
//         //       }
//         //     })
//         //   }
//         // })
//       }

// }
